<?php



class dbstuff {
	var $querynum = 0;
	var $link;
	var $charset;
	var $query;
	
	
	function connect($dbhost, $dbuser, $dbpw, $dbname = '', $pconnect = 0, $halt = TRUE) {
		if ($pconnect) {
			if (! $this->link = @mysql_pconnect ( $dbhost, $dbuser, $dbpw )) {
				$halt && $this->halt ( 'Can not connect to MySQL server' );
			}
		} else {
			if (! $this->link = @mysql_connect ( $dbhost, $dbuser, $dbpw, 1 )) {
				$halt && $this->halt ( 'Can not connect to MySQL server' );
			}
		}
		
		if ($this->version () > '4.1') {
			if ($this->charset) {
				@mysql_query ( "SET character_set_connection=$this->charset, character_set_results=$this->charset, character_set_client=binary", $this->link );
			}
			if ($this->version () > '5.0.1') {
				@mysql_query ( "SET sql_mode=''", $this->link );
			}
		}
		if ($dbname) {
			@mysql_select_db ( $dbname, $this->link );
		}
		

	}
	
	// 数据库连接
	function dbconnect() {
		global $_SGLOBAL, $_SC;
		// include_once ('class_mysql.php');
		$_SGLOBAL ['db'] = new dbstuff ();
		$_SGLOBAL ['db']->charset = $_SC ['dbcharset'];
		$_SGLOBAL ['db']->connect ( $_SC ['dbhost'], $_SC ['dbuser'], $_SC ['dbpw'], $_SC ['dbname'], $_SC ['pconnect'] );
		// 时间
		$mtime = explode ( ' ', microtime () );
		
		$_SGLOBAL ['timestamp'] = $mtime [1];
		$_SGLOBAL ['supe_starttime'] = $_SGLOBAL ['timestamp'] + $mtime [0];
	}
	
	
	// 收音机数据库连接
	function dbienjoyconnect() {
		global $_SGLOBAL, $_SC1;
		// include_once ('class_mysql.php');
		$_SGLOBAL ['db'] = new dbstuff ();
		$_SGLOBAL ['db']->charset = $_SC1 ['dbcharset'];
		$_SGLOBAL ['db']->connect ( $_SC1 ['dbhost'], $_SC1 ['dbuser'], $_SC1 ['dbpw'], $_SC1 ['dbname'], $_SC1 ['pconnect'] );
		// 时间
		$mtime = explode ( ' ', microtime () );
	
		$_SGLOBAL ['timestamp'] = $mtime [1];
		$_SGLOBAL ['supe_starttime'] = $_SGLOBAL ['timestamp'] + $mtime [0];
	}
	
	
/* 	// 博泰数据库连接
	function dbpateoconnect() {
		global $_SGLOBAL, $_SC;
		// include_once ('class_mysql.php');
		$DBConnect = new DBConnect();
		$_SGLOBAL ['db'] = $DBConnect->getCrmConnect();
		$_SGLOBAL ['db']->query ( "SET NAMES UTF8" );
		
		$mtime = explode ( ' ', microtime () );
	
		$_SGLOBAL ['timestamp'] = $mtime [1];
		$_SGLOBAL ['supe_starttime'] = $_SGLOBAL ['timestamp'] + $mtime [0];
	}
	 */
	function select_db($dbname) {
		return mysql_select_db ( $dbname, $this->link );
	}
	
	function fetch_array($query, $result_type = MYSQL_ASSOC) {
		return mysql_fetch_array ( $query, $result_type );
	}
	
	function query($sql, $type = '') {
	
			global $_SGLOBAL;
			$sqlstarttime = $sqlendttime = 0;
			$mtime = explode ( ' ', microtime () );
			$sqlstarttime = number_format ( ($mtime [1] + $mtime [0] - $_SGLOBAL ['supe_starttime']), 6 ) * 1000;
		
		$func = $type == 'UNBUFFERED' && @function_exists ( 'mysql_unbuffered_query' ) ? 'mysql_unbuffered_query' : 'mysql_query';
		if (! ($query = $func ( $sql, $this->link )) && $type != 'SILENT') {
			$this->halt ( 'MySQL Query Error', $sql );
		}
			$mtime = explode ( ' ', microtime () );
			$sqlendttime = number_format ( ($mtime [1] + $mtime [0] - $_SGLOBAL ['supe_starttime']), 6 ) * 1000;
			$sqltime = round ( ($sqlendttime - $sqlstarttime), 3 );
			
			$explain = array ();
			$info = mysql_info ();
			if ($query && preg_match ( "/^(select )/i", $sql )) {
				$explain = mysql_fetch_assoc ( mysql_query ( 'EXPLAIN ' . $sql, $this->link ) );
			}
			$_SGLOBAL ['debug_query'] [] = array ('sql' => $sql, 'time' => $sqltime, 'info' => $info, 'explain' => $explain );
	
		$this->querynum ++;
		$this->query=$query;
		return $query;
	}
	
	function inserttable($tablename, $insertsqlarr, $returnid = 0, $replace = false, $silent = 0) {
		global $_SGLOBAL;
		$tablename = $tablename;
	
		$insertkeysql = $insertvaluesql = $comma = '';
		foreach ( $insertsqlarr as $insert_key => $insert_value ) {
			$insertkeysql .= $comma . '`' . $insert_key . '`';
			$insertvaluesql .= $comma . '\'' . $insert_value . '\'';
			$comma = ', ';
		}
		$method = $replace ? 'REPLACE' : 'INSERT';
		$_SGLOBAL ['db']->query ( $method . ' INTO ' . $tablename . ' (' . $insertkeysql . ') VALUES (' . $insertvaluesql . ')', $silent ? 'SILENT' : '' );
		if ($returnid && ! $replace) {
			return $_SGLOBAL ['db']->insert_id ();
		}
	}
	
	function updatetable($tablename, $insertsqlarr, $wherearr) {
		global $_SGLOBAL;
		$tablename = $tablename;
	
		$insertkeysql = $insertvaluesql = $comma = '';
		foreach ( $insertsqlarr as $insert_key => $insert_value ) {
			$insertkeysql .= $comma . '`' . $insert_key . '` = ' . '\'' . $insert_value . '\'';
			$comma = ', ';
		}
		$wheresql = " where ";
		foreach ( $wherearr as $w_key => $w_value ) {
			if($w_key == 0){
				$wheresql = $wheresql . $w_key . "=" . $w_value;
			}else{
				$wheresql = $wheresql . " and " . $w_key . "=" . $w_value;
			}
		}
	
		if($_SGLOBAL ['db']->query ( 'update ' . $tablename . ' set ' . $insertkeysql . $wheresql )){
			return 1;
		}else{
			return 0;
		}
	
	}
	
	function affected_rows() {
		return mysql_affected_rows ( $this->link );
	}
	
	function error() {
		return (($this->link) ? mysql_error ( $this->link ) : mysql_error ());
	}
	
	function errno() {
		return intval ( ($this->link) ? mysql_errno ( $this->link ) : mysql_errno () );
	}
	
	function result($query, $row) {
		$query = @mysql_result ( $query, $row );
		return $query;
	}
	
	function num_rows($query) {
		$query = mysql_num_rows ( $query );
		return $query;
	}
	
	function num_fields($query) {
		return mysql_num_fields ( $query );
	}
	
	function free_result($query) {
		return mysql_free_result ( $query );
	}
	
	function insert_id() {
		return ($id = mysql_insert_id ( $this->link )) >= 0 ? $id : $this->result ( $this->query ( "SELECT last_insert_id()" ), 0 );
	}
	
	function fetch_row() {
		$query = @mysql_fetch_assoc ( $this->query );
		return $query;
	}
	
	function fetch_row1($query) {
		$query = mysql_fetch_row ( $query );
		return $query;
	}
	
	function fetch_fields() {
		return mysql_fetch_field ( $this->query );
	}
	
	function version() {
		return mysql_get_server_info ( $this->link );
	}
	
	function close() {
		return mysql_close ( $this->link );
	}
	
	function halt($message = '', $sql = '') {
		$dberror = $this->error ();
		$dberrno = $this->errno ();
		$help_link = "http://www.google.com.hk/search?q=" . rawurlencode ( $dberrno ) . "&dberror=" . rawurlencode ( $dberror );
		echo "<div style=\"position:absolute;font-size:11px;font-family:verdana,arial;background:#EBEBEB;padding:0.5em;\">
		<b>MySQL Error</b><br>
		<b>Message</b>: $message<br>
		<b>SQL</b>: $sql<br>
		<b>Error</b>: $dberror<br>
		<b>Errno.</b>: $dberrno<br>
		<a href=\"$help_link\" target=\"_blank\">Click here to seek help.</a>
		</div>";
		exit ();
	}
}